package com.madi.company.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;

public class WordWrapView extends ViewGroup {
	private static final int PADDING_HOR = 8;// 水平方向padding
	private static final int PADDING_VERTICAL = 8;// 垂直方向padding
	private static final int SIDE_MARGIN = 15;// 左右间距
	private static final int TEXT_MARGIN = 15;

	/**
	 * @param context
	 */
	public WordWrapView(Context context) {
		super(context);
	}

	/**
	 * @param context
	 * @param attrs
	 * @param defStyle
	 */
	public WordWrapView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	/**
	 * @param context
	 * @param attrs
	 */
	public WordWrapView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	@Override
	protected void onLayout(boolean changed, int l, int t, int r, int b) {
		int childCount = getChildCount();
		int autualWidth = r - l;
		int x = SIDE_MARGIN;// 横坐标开始
		int y = 0;// 纵坐标开始
		int rows = 1;
		for (int i = 0; i < childCount; i++) {
			View view = getChildAt(i);
			//view.setBackgroundColor(Color.GREEN);
			if (view.getVisibility() != View.GONE) {
				int width = view.getMeasuredWidth();
				int height = view.getMeasuredHeight();
				x += width + TEXT_MARGIN;
				if (x > autualWidth) {
					x = width + SIDE_MARGIN;
					rows++;
				}
				y = rows * (height + TEXT_MARGIN);
				if (i == 0) {
					view.layout(x - width - TEXT_MARGIN, y - height, x - TEXT_MARGIN, y);
				} else {
					if (rows == 1) {
						view.layout(x - width - TEXT_MARGIN, y - height, x - TEXT_MARGIN, y);
					} else {
						view.layout(x - width, y - height, x, y);
					}
				}
			}
		}
	};

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int x = 0;// 横坐标
		int y = 0;// 纵坐标
		int rows = 1;// 总行数
		int specWidth = MeasureSpec.getSize(widthMeasureSpec);
		int actualWidth = specWidth - SIDE_MARGIN * 2;// 实际宽度
		int childCount = getChildCount();
		for (int index = 0; index < childCount; index++) {
			View child = getChildAt(index);
			if (child.getVisibility() != View.GONE) {
				child.setPadding(PADDING_HOR, PADDING_VERTICAL, PADDING_HOR, PADDING_VERTICAL);
				child.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
				int width = child.getMeasuredWidth();
				int height = child.getMeasuredHeight();
				x += width + TEXT_MARGIN;
				if (x > actualWidth) {// 换行
					x = width;
					rows++;
				}
				y = rows * (height + TEXT_MARGIN);
			}
		}
		setMeasuredDimension(actualWidth, y);
	}

	/**
	 * 设置不可点击
	 * 
	 * @author lvjian
	 * @description
	 * @date 2016-3-30下午4:47:37
	 */
	public void isOnClick(boolean isCanClick) {
		for (int i = 0; i < getChildCount(); i++) {
			View child = getChildAt(i);
			child.setClickable(isCanClick);
		}
	}
}
